﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//int main()
//{
//	int a = 10000;
//	FILE* pf = fopen("test.txt", "wb");
//	fwrite(&a, 1, 4, pf);
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}


//int main()
//{
//	//fopen打开文件成功，返回文件地址
//	//打开文件失败，返回空指针NULL
//
//	//绝对路径
//	//FILE* pf = fopen("D:\\code__class117\\codeclass117-issue\\test_3_3\\test_3_3\\test.txt", "w");
//	//FILE* pf = fopen("D:/code__class117/codeclass117-issue/test_3_3/test_3_3/test.txt", "w");
//
//	//相对路径 
//	//. -- 当前路径
//	//.. -- 上一级路径
//	//FILE* pf = fopen("./../x64/test.txt", "w");
//	FILE* pf = fopen(".\\..\\x64\\test.txt", "w");
//
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	else
//	{
//		printf("打开文件成功\n");
//	}
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int  main()
//{
//	FILE* pf = fopen("data.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	fputc('a', pf);
//	fputc('b', pf);
//	fputc('c', pf);
//	fputc('d', pf);
//	fputc('e', pf);
//	fputc('f', pf);
//	fputc('g', pf);
//	int ch = fputc('h', pf);
//	printf("%c\n", ch);
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}


//int  main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	int ch = 0;
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		ch = fgetc(pf);
//		printf("%c\n", ch);
//	}
//
//	ch = feof(pf);
//	printf("%d ", ch);
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件
//	//int ch = fgetc(pf);
//	//printf("%c\n", ch);//a
//
//	//ch = fgetc(pf);
//	//printf("%c\n", ch);//b
//
//	//ch = fgetc(pf);
//	//printf("%c\n", ch);//c
//
//	int ch = 0;
//	while ((ch = fgetc(pf)) != EOF)
//	{
//		printf("%c ", ch);
//	}
//
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	fputs("hello wirld!\n", pf);
//	int ch = fputs("hello bite!\n", pf);
//	printf("%d \n", ch);
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}


//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	char arr[20] = "xxxxxxxxxxxxxxxxxxxx";
//
//	fgets(arr,15,pf);
//	
//	printf("%s\n", arr);
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}


//int main()
//{
//	FILE* pf = fopen("data.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	fprintf(pf, "%s  %d  %.2lf", "张文雷", 20, 3.14);
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}


//struct S
//{
//	char arr[20];
//	int a;
//	double b;
//}s;
//
//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	fscanf(pf, "%s  %d  %lf",s.arr ,&(s.a),&(s.b));
//
//	printf("%s  %d  %.2lf\n", s.arr,s.a ,s.b );
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//struct S
//{
//	char arr[20];
//	int num;
//	double pai;
//};
//
//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	struct S s = {0};
//	//读文件
//	fscanf(pf, "%s %d %lf", s.arr, &(s.num), &(s.pai));
//	printf("%s %d %lf\n", s.arr, s.num, s.pai);
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "w");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	fprintf(stdout, "%s  %d  %.2lf", "张文雷", 20, 3.14);
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//struct S
//{
//	char arr[20];
//	int num;
//	double pai;
//};
//
//int main()
//{
//	struct S s = { "world", 202, 3.14 };
//	char arr[30] = {0};
//	sprintf(arr, "%s %d %lf", s.arr, s.num, s.pai);
//	printf("字符串:%s\n", arr);
//	//从arr中提取出结构体的数据
//	struct S t = { 0 };
//	sscanf(arr, "%s %d %lf", t.arr, &(t.num), &(t.pai));
//	printf("结构体:%s %d %lf\n", t.arr, t.num, t.pai);
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("test_bin.text", "wb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	int arr[] = { 1,2,3,4,4 };
//
//	fwrite(arr, sizeof(int), 5, pf);
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}


//int main()
//{
//	FILE* pf = fopen("test_bin.text", "rb");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//二进制的形式读文件
//	int arr[10] = { 0 };
//	fread(arr, sizeof(int), 5, pf);
//
//	int i = 0;
//	for (i = 0; i < 5; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	int ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	fseek(pf, 5, SEEK_SET);
//
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	int ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	fseek(pf, 2, SEEK_CUR);
//
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	int ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	fseek(pf, -1, SEEK_END);
//
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	return 0;
//}

//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	int ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	long int len = ftell(pf);
//	printf("%ld\n", len);
//
//	return 0;
//}


//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//
//	int ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	long int len = ftell(pf);
//	printf("%ld\n", len);
//
//	rewind(pf);
//	ch = fgetc(pf);
//	printf("%c\n", ch);
//
//	return 0;
//}


//int main()
//{
//	FILE* pf = fopen("data.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//读文件
//	int ch = 0;
//
//	while ((ch = fgetc(pf)) != EOF)
//	{
//		printf("%c ", ch);
//	}
//
//	fclose(pf);
//	pf = NULL;
//
//	return 0;
//}

#include <stdio.h>
#include <stdlib.h>

//int main(void)
//{
//	int c; // 注意：int，⾮char，要求处理EOF 
//	FILE* fp = fopen("data.txt", "r");
//	if (!fp) 
//	{
//		perror("File opening failed");
//		return EXIT_FAILURE;
//	}
//	//fgetc 当读取失败的时候或者遇到⽂件结束的时候，都会返回EOF 
//	while ((c = fgetc(fp)) != EOF) // 标准C I/O读取⽂件循环 
//	{
//		putchar(c);
//	}
//	//判断是什么原因结束的 
//	if (ferror(fp))
//		puts("I/O error when reading");
//	else if (feof(fp))
//		puts("End of file reached successfully");
//
//	fclose(fp);
//}


//int main(void)
//{
//	int c; // 注意：int，⾮char，要求处理EOF 
//	FILE* fp = fopen("test_bin.text", "r");
//	if (!fp)
//	{
//		perror("File opening failed");
//		return EXIT_FAILURE;
//	}
//	//fgetc 当读取失败的时候或者遇到⽂件结束的时候，都会返回EOF 
//	while ((c = fgetc(fp)) != EOF) // 标准C I/O读取⽂件循环 
//	{
//		putchar(c);
//	}
//	//判断是什么原因结束的 
//	if (ferror(fp))
//		puts("I/O error when reading");
//	else if (feof(fp))
//		puts("End of file reached successfully");
//
//	fclose(fp);
//}

#include <stdio.h>
#include <windows.h>
//VS2022 WIN11环境测试 
int main()
{
	FILE* pf = fopen("test.txt", "w");
	fputs("abcdef", pf);//先将代码放在输出缓冲区 
	printf("睡眠10秒-已经写数据了，打开test.txt文件，发现文件没有内容\n");
	Sleep(10000);
	printf("刷新缓冲区\n");
	fflush(pf);//刷新缓冲区时，才将输出缓冲区的数据写到⽂件（磁盘） 
	//注：fflush 在⾼版本的VS上不能使⽤了 
	printf("再睡眠10秒-此时，再次打开test.txt文件，文件有内容了\n");
	Sleep(10000);
	fclose(pf);
	//注：fclose在关闭⽂件的时候，也会刷新缓冲区 
	pf = NULL;
	return 0;
}